home *** CD-ROM | disk | FTP | other *** search
/ U.S. Robotics Connections 2 / US Robotics Connections.iso / pc / sourcepc / qlmcw / qlmcplus.pak / HOSTMODE.SRP < prev    next >
Encoding:
Text File  |  1996-01-08  |  16.0 KB  |  777 lines

  1. int STACKSIZE = 45;
  2.  
  3. /* Quick Link Host Mode Script Version 1.0 */
  4. /* Copyright Smith Micro Software, Inc. (c) 1992 */
  5.  
  6. int  BaudRate;
  7.  
  8. char FALSE = 0;
  9. char TRUE = 1;
  10. char CANCEL = -1;
  11.  
  12. int  MAX_FILE_LEN = 144;
  13. int  HOST_TIMOUT;
  14.  
  15. char DefaultProtocol;
  16. char CurrentDir[144];
  17. char StartupDir[144];
  18. char TempDir[144];
  19. char UserName[82];
  20. char userString[82];
  21.  
  22. char host_timeout = FALSE;
  23. char host_continue;
  24. char security_level;
  25. char last_prompt;
  26. char ASCIITransComplete[] = "\r\nASCII transfer completed.\r\n";
  27. char ASCIITransCanceled[] = "\r\nASCII transfer completed.\r\n";
  28. char xTransComplete[] = "\r\nXmodem transfer completed.\r\n";
  29. char xTransCanceled[] = "\r\nXmodem transfer canceled.\r\n";
  30. char yTransComplete[] = "\r\nYmodem transfer completed.\r\n";
  31. char yTransCanceled[] = "\r\nYmodem transfer canceled.\r\n";
  32. char kTransComplete[] = "\r\nKermit transfer completed.\r\n";
  33. char kTransCanceled[] = "\r\nKermit transfer canceled.\r\n";
  34. char zTransComplete[] = "\r\nZmodem transfer completed.\r\n";
  35. char zTransCanceled[] = "\r\nZmodem transfer canceled.\r\n";
  36. char xyCancelPrompt[] = "\r\nPress Ctrl-X several times to cancel.\r\n";
  37. char thatSelection[] = "\r\nThe option you selected is not available to you.\r\n";
  38. char accessDenied[] = "\r\nAccess denied.\r\n";
  39. char tooLong[] = "\r\n\r\nYou took too long to respond.\r\n\r\nGoodbye!\r\n";
  40. char invalid[] = "\r\nInvalid selection.\r\n";
  41. char pleaseWaitProcessing[] = "\r\nPlease wait.  Your request is being processed...\r\n";
  42.  
  43. char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
  44.  
  45. HostOut(char *str)
  46. {
  47.     Out(str);
  48.     Echo(str);
  49. }
  50.  
  51.  
  52. ListProtocols()
  53. {
  54.     HostOut("\r\nChoose a file transfer protocol...\r\n");
  55.     HostOut("<1> ASCII        <5> Ymodem\r\n");
  56.     HostOut("<2> Xmodem       <6> Ymodem-G\r\n");
  57.     HostOut("<3> Xmodem CRC   <7> Kermit/SuperKermit\r\n");
  58.     HostOut("<4> Xmodem 1K    <8> Zmodem\r\n");
  59.     HostOut("                 <ESC> cancels transfer\r\n");
  60. }
  61.  
  62.  
  63. SelectProtocol()
  64. {
  65.     int rv;
  66.  
  67.     ListProtocols();
  68.     DefaultProtocol = 0;
  69.     PrintHostPrompt(3);
  70.  
  71.     rv = GetUserInput(userString, TRUE, HOST_TIMOUT);
  72.     if (rv)
  73.     {
  74.         if ((userString[0] >= 49) && (userString[0] <= 56) && (!userString[1]))
  75.             DefaultProtocol = userString[0] - 48;
  76.         else
  77.             rv = CANCEL;
  78.     }
  79.     else
  80.         host_timeout = TRUE;
  81.     return(rv);
  82. }
  83.  
  84.  
  85. GetFileName()
  86. {
  87.     int rv;
  88.  
  89.     PrintHostPrompt(4);
  90.     rv = GetUserInput(userString, TRUE, HOST_TIMOUT);
  91.  
  92.     if (rv == CANCEL)
  93.     {
  94.         return(CANCEL);
  95.     }
  96.     else if (rv == TRUE)
  97.     {
  98.         if (userString[0])
  99.         {
  100.             if ((Exists(userString)) == -1)
  101.             {
  102.                 return(-2);
  103.             }
  104.             else
  105.             {
  106.                 return(TRUE);
  107.             }
  108.         }
  109.     }
  110.     else
  111.         host_timeout = TRUE;
  112.     return(FALSE);
  113. }
  114.  
  115.  
  116. PutFileName()
  117. {
  118.     int rv;
  119.  
  120.     PrintHostPrompt(4);
  121.     rv = GetUserInput(userString, TRUE, HOST_TIMOUT);
  122.  
  123.     if (rv == CANCEL)
  124.     {
  125.         return(CANCEL);
  126.     }
  127.     else if (rv == TRUE)
  128.     {
  129.         if (userString[0])
  130.         {
  131.             if ((Exists(userString)) == -1)
  132.             {
  133.                 return(TRUE);
  134.             }
  135.             else
  136.             {
  137.                 return(FALSE);
  138.             }
  139.         }
  140.     }
  141.     else
  142.         host_timeout = TRUE;
  143.     return(FALSE);
  144. }
  145.  
  146.  
  147. GetMultipleFiles(char *fileName)
  148. {
  149.     char ret = TRUE;
  150.  
  151.     if (fileName[0])
  152.         AddFile(fileName);
  153.  
  154.     HostOut("\r\nSpecify multiple files, blank filename terminates list.\r\n");
  155.  
  156.     while ((ret == TRUE) && !host_timeout)
  157.     {
  158.         while ((ret = GetFileName()) == -2)
  159.             HostOut("\r\nFile does not exist.\r\n");
  160.  
  161.         StrCpy(userString, fileName);
  162.         if (fileName[0])
  163.             AddFile(fileName);
  164.     }
  165. }
  166.  
  167.  
  168. DownloadFiles()
  169. {
  170.     int rv;
  171.     char fileName[MAX_FILE_LEN];
  172.  
  173.     ClearList();
  174.     HostOut("\r\nFile Download");
  175.     if ((GetFileName() == TRUE) && !host_timeout)
  176.     {
  177.         StrCpy(userString, fileName);
  178.         rv = SelectProtocol();
  179.         if (rv == CANCEL)
  180.             return(CANCEL);
  181.         else if (rv == FALSE)
  182.         return(host_timeout);
  183.  
  184.         if (DefaultProtocol == 1)
  185.         {
  186.             PrintHostPrompt(5);
  187.             if (GetUserInput(userString, TRUE, HOST_TIMOUT))
  188.             {
  189.                 if (Upload(1, fileName))
  190.                     HostOut(ASCIITransComplete);
  191.                 else
  192.                     HostOut(ASCIITransCanceled);
  193.             }
  194.             else
  195.             {
  196.                 host_timeout = TRUE;
  197.             }
  198.         }
  199.         else if ((DefaultProtocol == 2) || (DefaultProtocol == 3))
  200.         {
  201.             HostOut("\r\nBegin your Xmodem receive now.");
  202.             HostOut(xyCancelPrompt);
  203.             Wait(2);
  204.             if (Upload(3, fileName))
  205.                 HostOut(xTransComplete);
  206.             else
  207.                 HostOut(xTransCanceled);
  208.         }
  209.         else if (DefaultProtocol == 4)
  210.         {
  211.             HostOut("\r\nBegin your Xmodem 1K receive now.");
  212.             HostOut(xyCancelPrompt);
  213.             if (Upload(4, fileName))
  214.                 HostOut(xTransComplete);
  215.             else
  216.                 HostOut(xTransCanceled);
  217.         }
  218.         else if ((DefaultProtocol == 5) || (DefaultProtocol == 6))
  219.         {
  220.  
  221.             GetMultipleFiles(fileName);
  222.         if (!host_timeout)
  223.             {
  224.                 if (DefaultProtocol == 5)
  225.                     HostOut("\r\nBegin your Ymodem receive now.");
  226.                 else
  227.                     HostOut("\r\nBegin your Ymodem-G receive now.");
  228.                 HostOut(xyCancelPrompt);
  229.                 Wait(2);
  230.                 if (Upload(5))
  231.                     HostOut(yTransComplete);
  232.                 else
  233.                     HostOut(yTransCanceled);
  234.  
  235.             }
  236.         }
  237.         else if (DefaultProtocol == 7)
  238.         {
  239.             GetMultipleFiles(fileName);
  240.         if (!host_timeout)
  241.             {
  242.                 HostOut("\r\nBegin your Kermit/SuperKermit receive now.");
  243.                 HostOut(xyCancelPrompt);
  244.                 if (Upload(2))
  245.                     HostOut(kTransComplete);
  246.                 else
  247.                     HostOut(kTransCanceled);
  248.             }
  249.         }
  250.         else if (DefaultProtocol == 8)
  251.         {
  252.             GetMultipleFiles(fileName);
  253.         if (!host_timeout)
  254.             {
  255.                 HostOut("\r\nBegin your Zmodem receive now.");
  256.                 HostOut(xyCancelPrompt);
  257.                 if (Upload(7))
  258.                     HostOut(zTransComplete);
  259.                 else
  260.                     HostOut(zTransCanceled);
  261.             }
  262.         }
  263.     }
  264.     else
  265.         HostOut("\r\nFile does not exist.\r\n");
  266. }
  267.  
  268.  
  269. ListFiles()
  270. {
  271.     PrintHostPrompt(6);
  272.     if (GetUserInput(userString, TRUE, HOST_TIMOUT))
  273.     {
  274.         if (userString[1] == ':')
  275.         {
  276.             HostOut("\r\nCannot list files across drives.\r\n");
  277.             return;
  278.         }
  279.         if (!userString[0])
  280.             StrCpy("*.*", userString);
  281.         DisplayFiles(userString, security_level);
  282.     }
  283.     else
  284.         host_timeout = TRUE;
  285. }
  286.  
  287.  
  288. UploadFiles()
  289. {
  290.     int file, i = 0, lines = 0, rv;
  291.     char ch, buffer[80];
  292.  
  293.     Sprintf(buffer, "\r\nThere are %i000 bytes of available disk space on drive %c:\r\n", KBytesFree(CurrentDir[0]), CurrentDir[0]);
  294.     HostOut(buffer);
  295.  
  296.     rv = SelectProtocol();
  297.     if (rv == CANCEL)
  298.         return(CANCEL);
  299.     else if (rv == FALSE)
  300.     return(host_timeout);
  301.  
  302.     if (DefaultProtocol == 1)
  303.     {
  304.         if (PutFileName() == TRUE)
  305.         {
  306.             HostOut("\r\nStart your ASCII send now.\r\nPress Ctrl-Z when complete.\r\n");
  307.             rv = Download(1, userString);
  308.             if (rv)
  309.                 HostOut(ASCIITransComplete);
  310.             else
  311.                 HostOut(ASCIITransCanceled);
  312.         }
  313.         else
  314.         {
  315.             HostOut("\r\nFile already exists.\r\n");
  316.             return(CANCEL);
  317.         }
  318.     }
  319.     else if (DefaultProtocol == 2)
  320.     {
  321.         if (PutFileName() == TRUE)
  322.         {
  323.             HostOut("\r\nStart your Xmodem send now.");
  324.             HostOut(xyCancelPrompt);
  325.             Wait(2);
  326.             rv = Download(3, userString);
  327.             if (rv)
  328.                 HostOut(xTransComplete);
  329.             else
  330.                 HostOut(xTransCanceled);
  331.         }
  332.         else
  333.         {
  334.             HostOut("\r\nFile already exists.\r\n");
  335.             return(CANCEL);
  336.         }
  337.     }
  338.     else if (DefaultProtocol == 3)
  339.     {
  340.         if (PutFileName() == TRUE)
  341.         {
  342.             HostOut("\r\nStart your Xmodem CRC send now.");
  343.             HostOut(xyCancelPrompt);
  344.             Wait(2);
  345.             rv = Download(4, userString);
  346.             if (rv)
  347.                 HostOut(xTransComplete);
  348.             else
  349.                 HostOut(xTransCanceled);
  350.         }
  351.         else
  352.         {
  353.             HostOut("\r\nFile already exists.\r\n");
  354.             return(CANCEL);
  355.         }
  356.     }
  357.     else if (DefaultProtocol == 4)
  358.     {
  359.         if (PutFileName() == TRUE)
  360.         {
  361.             HostOut("\r\nStart your Xmodem 1K send now.");
  362.             HostOut(xyCancelPrompt);
  363.             Wait(2);
  364.             rv = Download(5, userString);
  365.             if (rv)
  366.                 HostOut(xTransComplete);
  367.             else
  368.                 HostOut(xTransCanceled);
  369.         }
  370.         else
  371.         {
  372.             HostOut("\r\nFile already exists.\r\n");
  373.             return(CANCEL);
  374.         }
  375.     }
  376.     else if (DefaultProtocol == 5)
  377.     {
  378.         HostOut("\r\nStart your Ymodem send now.");
  379.         HostOut(xyCancelPrompt);
  380.         Wait(2);
  381.         rv = Download(6);
  382.         if (rv)
  383.             HostOut(yTransComplete);
  384.         else
  385.             HostOut(yTransCanceled);
  386.     }
  387.     else if (DefaultProtocol == 6)
  388.     {
  389.         HostOut("\r\nStart your Ymodem-G send now.");
  390.         HostOut(xyCancelPrompt);
  391.         Wait(2);
  392.         rv = Download(7);
  393.         if (rv)
  394.             HostOut(yTransComplete);
  395.         else
  396.             HostOut(yTransCanceled);
  397.     }
  398.     else if (DefaultProtocol == 7)
  399.     {
  400.         HostOut("\r\nStart your Kermit/SuperKermit send now.\r\n");
  401.         rv = Download(2);
  402.         if (rv)
  403.             HostOut(kTransComplete);
  404.         else
  405.             HostOut(kTransCanceled);
  406.  
  407.     }
  408.     else if (DefaultProtocol == 8)
  409.     {
  410.         HostOut("\r\nStart your Zmodem send now.\r\n");
  411.         rv = Download(8);
  412.     }
  413.     return(rv);
  414. }
  415.  
  416.  
  417. ChangeDirectory()
  418. {
  419.     char directory[85], oldDir[85];
  420.     int i = 0, j, file;
  421.  
  422.     HostOut("\r\nCurrent path is: ");
  423.     Echo(CurrentDir);
  424.     OutBuffer(CurrentDir, StrLen(CurrentDir));
  425.  
  426.     HostOut("\r\n Change path to: ");
  427.     if (GetUserInput(userString, TRUE, HOST_TIMOUT))
  428.     {
  429.         if (userString[0])
  430.         {
  431.             if (SetDirectory(userString))
  432.                 StrCpy(GetDirectory(), CurrentDir);
  433.             else
  434.         HostOut("\r\nCannot change to specified path.\r\n");
  435.         }
  436.         return(TRUE);
  437.     }
  438.     else
  439.     {
  440.         host_timeout = TRUE;
  441.         return(FALSE);
  442.     }
  443. }
  444.  
  445.  
  446. ChangeDrive()
  447. {
  448.     int i = 0, j, file;
  449.     char junk[3];
  450.  
  451.     HostOut("\r\nCurrent drive is: ");
  452.  
  453.     Copy(CurrentDir, junk, 2);
  454.     junk[2] = 0;
  455.     HostOut(junk);
  456.  
  457.     HostOut("\r\n Change drive to: ");
  458.  
  459.     if (GetUserInput(userString, TRUE, HOST_TIMOUT))
  460.     {
  461.         if (userString[0])
  462.         {
  463.             if (SetDrive(userString))
  464.                 StrCpy(GetDirectory(), CurrentDir);
  465.             else
  466.         HostOut("\r\nCannot change to specified drive.\r\n");
  467.         }
  468.         return(TRUE);
  469.     }
  470.     else
  471.     {
  472.         host_timeout = TRUE;
  473.         return(FALSE);
  474.     }
  475. }
  476.  
  477.  
  478. PrintHostPrompt(int prompt)
  479. {
  480.     if (prompt)
  481.     last_prompt = prompt;
  482.     if (last_prompt == 1)
  483.     {
  484.         HostOut("\r\n<C>hange Drive <D>ownload <G>oodbye <H>elp <L>ist <M>ove <U>pload\r\n");
  485.         HostOut("Enter selection <C,D,G,H,L,M,U>: ");
  486.     }
  487.     else if (last_prompt == 2)
  488.         HostOut("\r\nEnter Password: ");
  489.     else if (last_prompt == 3)
  490.         HostOut("\r\nEnter Selection 1-8 or <ESC> to cancel: ");
  491.     else if (last_prompt ==  4)
  492.         HostOut("\r\nFilename: ");
  493.     else if (last_prompt ==  5)
  494.         HostOut("\r\nPress return to begin ASCII receive, <ESC> to cancel:\r\n");
  495.     else if (last_prompt ==  6)
  496.         HostOut("\r\nEnter file search parameter (e.g. *.*).  <ENTER> to search for all.\r\n->");
  497.     else if (last_prompt ==  7)
  498.         HostOut("\r\nEnter Name: ");
  499.     else if (last_prompt ==  8)
  500.         HostOut("\r\nAre you sure? <Y/N>: ");
  501.     else if (last_prompt ==  9)
  502.         HostOut("\r\nEnter Sysop Password: ");
  503. }
  504.  
  505.  
  506. LogCall(char *UserName)
  507. {
  508.     int hFile;
  509.     char szLogLine[80];
  510.     
  511.     int year, month, day, dayofweek, hour, minute, second, hsecond;
  512.  
  513.     Time(&year, &month, &day, &dayofweek, &hour, &minute, &second, &hsecond);
  514.     StrCpy(HomePath(), TempDir);
  515.     StrCat(TempDir, "CALLERS.TXT");
  516.     hFile = Open(TempDir, 1);
  517.     Seek(hFile, 0, 2);
  518.     Sprintf(szLogLine, "%-25s %s %i:%i\r\n", UserName, days[dayofweek], hour, minute);
  519.     Write(hFile, szLogLine, StrLen(szLogLine));
  520.     Close(hFile);
  521. }
  522.  
  523.  
  524. HostMainLoop()
  525. {
  526.     char host_online = TRUE, rightpassword = FALSE;
  527.  
  528.     int start_time, i;
  529.     int year, month, day, dayofweek, hour, minute, second, hsecond;
  530.  
  531.     start_time = Time(&year, &month, &day, &dayofweek, &hour, &minute, &second, &hsecond);
  532.     while ((CarrierDetect()) && (host_online))
  533.     {
  534.         PrintHostPrompt(1);
  535.         if ((i = GetUserInput(userString, TRUE, HOST_TIMOUT)) == TRUE)
  536.         {
  537.             if ((userString[0] == 'd') || (userString[0] == 'D'))
  538.             {
  539.                 if (AllowDownloads())
  540.                     DownloadFiles();
  541.                 else
  542.                     HostOut(thatSelection);
  543.             }
  544.             else if ((userString[0] == 'g') || (userString[0] == 'G'))
  545.             {
  546.                 PrintHostPrompt(8);
  547.             if (GetUserInput(userString, TRUE, HOST_TIMOUT))
  548.                 {
  549.                     if ((userString[0] == 'y') || (userString[0] == 'Y'))
  550.                     {
  551.                         HostOut("\r\nGoodbye!\r\n");
  552.                 host_online = FALSE;
  553.                     }
  554.                 }
  555.                 else
  556.                     host_timeout = TRUE;
  557.             }
  558.             else if ((userString[0] == 'h') || (userString[0] == 'H') || (userString[0] == '?'))
  559.             {
  560.                 StrCpy(HomePath(), TempDir);
  561.                 StrCat(TempDir, "HOSTHELP.TXT");
  562.                 if (!OutFile(TempDir))
  563.                     HostOut("\r\nNo help available.\r\n");
  564.             }
  565.             else if ((userString[0] == 'l') || (userString[0] == 'L'))
  566.             {
  567.                 ListFiles();
  568.             }
  569.             else if ((userString[0] == 'u') || (userString[0] == 'U'))
  570.             {
  571.                 if (AllowUploads())
  572.                     UploadFiles();
  573.                 else
  574.                     HostOut(thatSelection);
  575.             }
  576.             else if ((userString[0] == 'm') || (userString[0] == 'M'))
  577.             {
  578.                 if (security_level > 1)
  579.                     ChangeDirectory();
  580.                 else
  581.                     HostOut(thatSelection);
  582.             }
  583.             else if ((userString[0] == 'c') || (userString[0] == 'C'))
  584.             {
  585.                 if (security_level > 1)
  586.                     ChangeDrive();
  587.                 else
  588.                     HostOut(thatSelection);
  589.             }
  590.             else
  591.                 HostOut(invalid);
  592.         }
  593.         else if (i == 0)
  594.             host_timeout = TRUE;
  595.  
  596.         if (host_timeout)
  597.         {
  598.             HostOut(tooLong);
  599.             break;
  600.         }
  601.     }
  602. }
  603.  
  604.  
  605. main()
  606. {
  607.     char ch, connect;
  608.     int i;
  609.     int nKey, FaxMgr;
  610.  
  611.     host_continue = TRUE;
  612.     connect = FALSE;
  613.     HOST_TIMOUT = (HostTimeout()*60);
  614.  
  615.     FaxMgr = CalledFromFaxMgr();
  616.     if (!FaxMgr)
  617.     {
  618.         if (CarrierDetect())
  619.         {
  620.             Echo("\r\nWould you like to hangup the line? <Y/N>: ");
  621.             if (!GetUserInput(userString, TRUE, HOST_TIMOUT))
  622.             {
  623.             HostOut(tooLong);
  624.                 return();
  625.             }
  626.             if ((userString[0] == 'Y') || (userString[0] == 'y'))
  627.             {
  628.                 Wait(2);
  629.                 Hangup();
  630.             }
  631.             else if ((userString[0] == 'N') || (userString[0] == 'n'))
  632.             {
  633.                 connect = TRUE;
  634.             }
  635.         }
  636.     
  637.         if (!connect)
  638.         {
  639.             if (HostSpeed())
  640.                 Baud(HostSpeed());
  641.             Parity('N');
  642.             Stop("1");
  643.             Data(8);
  644.             Out(HostInit());
  645.             Out("\r");
  646.             WaitFor("OK\r\n", 3); 
  647.         }
  648.     }
  649.     StrCpy(GetDirectory(), StartupDir);
  650.  
  651.     while (host_continue)
  652.     {               
  653.         SetDrive(HostPath());
  654.         SetDirectory(HostPath());
  655.         StrCpy(GetDirectory(), CurrentDir);
  656.  
  657.         if (!FaxMgr)
  658.         {
  659.             if (!connect)
  660.             {
  661.                 Echo("\r\nWaiting for call...\r\n");
  662.                 Echo("Press <ESC> to cancel or 'L' to logon locally: ");
  663.             }
  664.         }
  665.         else
  666.             FaxMgr = FALSE;
  667.  
  668.         while ((!connect) && (host_continue))
  669.         {
  670.             nKey = GetKeyStroke();
  671.             if (nKey == -1)
  672.             {
  673.                 Echo("\r\nHost mode canceled by operator\r\n");
  674.                 host_continue = FALSE;
  675.                 break;
  676.             }
  677.             if ((nKey == 'l') || (nKey == 'L'))
  678.             {
  679.                 connect = TRUE;
  680.                 SetLocalHost(TRUE);
  681.                 Echo("\r\nEntering host mode locally.\r\n");
  682.             }
  683.             BaudRate = CallDetected();
  684.             if (BaudRate == -1)
  685.             {
  686.                 Echo("\r\nWaiting for call...\r\n");
  687.                 Echo("Press <ESC> to cancel or 'L' to logon locally: ");
  688.             }
  689.             else if (BaudRate)
  690.             {
  691.                 Beep();
  692.                 LogonDelay();
  693.                 connect = TRUE;
  694.             }
  695.         }
  696.         if (host_continue && connect)
  697.         {
  698.             PrintHostPrompt(7);
  699.             if (!GetUserInput(UserName, TRUE, HOST_TIMOUT))
  700.             {
  701.                 HostOut(tooLong);
  702.                 connect = FALSE;
  703.             }
  704.             else
  705.             {
  706.                 LogCall(UserName);
  707.             }
  708.         }
  709.         if (host_continue && UsePassword() && connect)
  710.         {
  711.             security_level = 0;
  712.             HostOut("\r\n");
  713.             for (i = 0; i < 4; i++)
  714.             {
  715.                 PrintHostPrompt(2);
  716.                 if (GetUserInput(userString, FALSE, HOST_TIMOUT))
  717.                 {
  718.                     if (UseMovePassword())
  719.                     {
  720.                         if (!StrnCmpI(userString, Password(), StrLen(Password())))
  721.                         {
  722.                             security_level = 2;
  723.                             break;
  724.                         }
  725.                     }
  726.                     else
  727.                     {
  728.                         if (!StrnCmpI(userString, Password(), StrLen(Password())))
  729.                         {
  730.                             security_level = 1;
  731.                             break;
  732.                         }
  733.                     }
  734.                 }
  735.                 else
  736.                 {
  737.                     HostOut(tooLong);
  738.                     connect = FALSE;
  739.                     break;
  740.                 }
  741.                 HostOut("\r\nInvalid password, please try again.\r\n");
  742.             }
  743.         }
  744.         else    
  745.         {                          
  746.             if (UseMovePassword())
  747.                 security_level = 2;
  748.             else
  749.                 security_level = 1;
  750.         }                         
  751.         
  752.         if (host_continue && connect)
  753.         {
  754.             if (security_level)
  755.             {
  756.                 StrCpy(HomePath(), TempDir);
  757.                 StrCat(TempDir, "HOSTMODE.TXT");
  758.                 OutFile(TempDir);
  759.                 userString[0] = 0;
  760.                 HostMainLoop();
  761.             }
  762.             else
  763.                 HostOut(accessDenied);
  764.         }
  765.         SetLocalHost(FALSE);
  766.         if (CarrierDetect())
  767.         {
  768.             Wait(2);
  769.             Hangup();
  770.         }
  771.     connect = FALSE;
  772.     host_timeout = FALSE;
  773.     }           
  774.     SetDrive(StartupDir);
  775.     SetDirectory(StartupDir);
  776. }
  777.